CC=g++
CFLAGS=-pedantic -Wall -c -W
LDFLAGS=-lcppunit
OBJ=main.o TraitementChaine.o Parseur.o AffecteVariable.o AfficheChaine.o AppelFonction.o DeclareVariable.o DefinitionFonction.o Expression.o Identifiant.o Instruction.o InstructionBase.o InstructionSimple.o Nombre.o OperateurBinaire.o Parametre.o Programme.o Repete.o ManipulationFichier.o
OBJTEST=mainTest.o TraitementChaineTest.o TraitementChaine.o Parseur.o AffecteVariableTest.o AffecteVariable.o AfficheChaineTest.o AfficheChaine.o AppelFonctionTest.o AppelFonction.o DeclareVariableTest.o DeclareVariable.o DefinitionFonctionTest.o DefinitionFonction.o ExpressionTest.o Expression.o IdentifiantTest.o Identifiant.o Instruction.o InstructionBase.o InstructionSimple.o NombreTest.o Nombre.o OperateurBinaireTest.o OperateurBinaire.o Parametre.o ProgrammeTest.o Programme.o RepeteTest.o Repete.o ManipulationFichier.o
INSTALL=/usr/bin/install -c
BINDIR=/usr/local/bin
EXEC=project
EXECTEST=test

all: 	$(EXEC) $(EXECTEST)

#
# Dev Tools
#

# Clean project
clean:
	rm -rf *.o
	rm -rf *.log
	rm -rf *~

mrproper: clean
	rm -rf $(EXEC)
	rm -rf $(EXECTEST)

#
# Compile
#
project:	$(OBJ)
	$(CC) -o $(EXEC) $(OBJ) $(LDFLAGS)

test:		$(OBJTEST)
	$(CC) -o $(EXECTEST) $(OBJTEST) $(LDFLAGS)


main.o: main.cpp
	g++ -o main.o -c main.cpp
	
ManipulationFichier.o: ManipulationFichier.h ManipulationFichier.cpp
	g++ -o ManipulationFichier.o -c ManipulationFichier.cpp

TraitementChaine.o: TraitementChaine.h TraitementChaine.cpp
	g++ -o TraitementChaine.o -c TraitementChaine.cpp
	
Parseur.o: Parseur.h Parseur.cpp
	g++ -o Parseur.o -c Parseur.cpp

AffecteVariable.o: grammaire/AffecteVariable.h grammaire/AffecteVariable.cpp
	g++ -o AffecteVariable.o -c grammaire/AffecteVariable.cpp

AfficheChaine.o: grammaire/AfficheChaine.h grammaire/AfficheChaine.cpp
	g++ -o AfficheChaine.o -c grammaire/AfficheChaine.cpp

AppelFonction.o: grammaire/AppelFonction.h grammaire/AppelFonction.cpp
	g++ -o AppelFonction.o -c grammaire/AppelFonction.cpp

DeclareVariable.o: grammaire/DeclareVariable.h grammaire/DeclareVariable.cpp
	g++ -o DeclareVariable.o -c grammaire/DeclareVariable.cpp

DefinitionFonction.o: grammaire/DefinitionFonction.h grammaire/DefinitionFonction.cpp
	g++ -o DefinitionFonction.o -c grammaire/DefinitionFonction.cpp

Expression.o: grammaire/Expression.h grammaire/Expression.cpp
	g++ -o Expression.o -c grammaire/Expression.cpp

Identifiant.o: grammaire/Identifiant.h grammaire/Identifiant.cpp
	g++ -o Identifiant.o -c grammaire/Identifiant.cpp

Instruction.o: grammaire/Instruction.h grammaire/Instruction.cpp
	g++ -o Instruction.o -c grammaire/Instruction.cpp

InstructionBase.o: grammaire/InstructionBase.h grammaire/InstructionBase.cpp
	g++ -o InstructionBase.o -c grammaire/InstructionBase.cpp

InstructionSimple.o: grammaire/InstructionSimple.h grammaire/InstructionSimple.cpp
	g++ -o InstructionSimple.o -c grammaire/InstructionSimple.cpp

Nombre.o: grammaire/Nombre.h grammaire/Nombre.cpp
	g++ -o Nombre.o -c grammaire/Nombre.cpp

OperateurBinaire.o: grammaire/OperateurBinaire.h grammaire/OperateurBinaire.cpp
	g++ -o OperateurBinaire.o -c grammaire/OperateurBinaire.cpp

Parametre.o: grammaire/Parametre.h grammaire/Parametre.cpp
	g++ -o Parametre.o -c grammaire/Parametre.cpp

Programme.o: grammaire/Programme.h grammaire/Programme.cpp
	g++ -o Programme.o -c grammaire/Programme.cpp

Repete.o: grammaire/Repete.h grammaire/Repete.cpp
	g++ -o Repete.o -c grammaire/Repete.cpp
	
mainTest.o: mainTest.cpp
	g++ -o mainTest.o -c mainTest.cpp
	
TraitementChaineTest.o: TraitementChaineTest.h TraitementChaineTest.cpp
	g++ -o TraitementChaineTest.o -c TraitementChaineTest.cpp
	
AffecteVariableTest.o: grammaire/AffecteVariableTest.h grammaire/AffecteVariableTest.cpp
	g++ -o AffecteVariableTest.o -c grammaire/AffecteVariableTest.cpp
	
AfficheChaineTest.o: grammaire/AfficheChaineTest.h grammaire/AfficheChaineTest.cpp
	g++ -o AfficheChaineTest.o -c grammaire/AfficheChaineTest.cpp
	
AppelFonctionTest.o: grammaire/AppelFonctionTest.h grammaire/AppelFonctionTest.cpp
	g++ -o AppelFonctionTest.o -c grammaire/AppelFonctionTest.cpp
	
DeclareVariableTest.o: grammaire/DeclareVariableTest.h grammaire/DeclareVariableTest.cpp
	g++ -o DeclareVariableTest.o -c grammaire/DeclareVariableTest.cpp
	
DefinitionFonctionTest.o: grammaire/DefinitionFonctionTest.h grammaire/DefinitionFonctionTest.cpp
	g++ -o DefinitionFonctionTest.o -c grammaire/DefinitionFonctionTest.cpp
	
ExpressionTest.o: grammaire/ExpressionTest.h grammaire/ExpressionTest.cpp
	g++ -o ExpressionTest.o -c grammaire/ExpressionTest.cpp
	
IdentifiantTest.o: grammaire/IdentifiantTest.h grammaire/IdentifiantTest.cpp
	g++ -o IdentifiantTest.o -c grammaire/IdentifiantTest.cpp
	
NombreTest.o: grammaire/NombreTest.h grammaire/NombreTest.cpp
	g++ -o NombreTest.o -c grammaire/NombreTest.cpp
	
OperateurBinaireTest.o: grammaire/OperateurBinaireTest.h grammaire/OperateurBinaireTest.cpp
	g++ -o OperateurBinaireTest.o -c grammaire/OperateurBinaireTest.cpp
	
ProgrammeTest.o: grammaire/ProgrammeTest.h grammaire/ProgrammeTest.cpp
	g++ -o ProgrammeTest.o -c grammaire/ProgrammeTest.cpp
	
RepeteTest.o: grammaire/RepeteTest.h grammaire/RepeteTest.cpp
	g++ -o RepeteTest.o -c grammaire/RepeteTest.cpp